<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="pt-br" lang="pt-br">
<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Classe Segurança : Guia do Usuário CodeIgniter</title>

<style type='text/css' media='all'>@import url('../userguide.css');</style>
<link rel='stylesheet' type='text/css' media='all' href='../userguide.css' />

<script type="text/javascript" src="../nav/nav.js"></script>
<script type="text/javascript" src="../nav/prototype.lite.js"></script>
<script type="text/javascript" src="../nav/moo.fx.js"></script>
<script type="text/javascript" src="../nav/user_guide_menu.js"></script>

<meta http-equiv="expires" content="-1" />
<meta http-equiv="pragma" content="no-cache" />
<meta name="robots" content="all" />
<meta name="author" content="ExpressionEngine Dev Team" />
<meta name="description" content="Guia do Usuário do CodeIgniter" />

</head>
<body>

<!-- START NAVIGATION -->
<div id="nav"><div id="nav_inner"><script type="text/javascript">create_menu('../');</script></div></div>
<div id="nav2"><a name="top"></a><a href="javascript:void(0);" onclick="myHeight.toggle();"><img src="../images/nav_toggle_darker.jpg" width="154" height="43" border="0" title="Alternar Tabela de Conteúdos" alt="Alternar Tabela de Conteúdos" /></a></div>
<div id="masthead">
<table cellpadding="0" cellspacing="0" border="0" style="width:100%">
<tr>
<td><h1>Guia de Usuário CodeIgniter Versão 2.0.0</h1></td>
<td id="breadcrumb_right"><a href="../toc.html">Tabela de Conteúdos</a></td>
</tr>
</table>
</div>
<!-- END NAVIGATION -->


<!-- START BREADCRUMB -->
<table cellpadding="0" cellspacing="0" border="0" style="width:100%">
<tr>
<td id="breadcrumb">
<a href="http://codeigniter.com.br/">Página Inicial</a> › 
<a href="../index.html">Guia de Usuário CodeIgniter</a> › Classe Segurança
</td>
<td id="searchbox"><form method="get" action="http://www.google.com.br/search"><input type="hidden" name="as_sitesearch" id="as_sitesearch" value="codeigniter.com.br/manual/" />Busca <input type="text" class="input" style="width:200px;" name="q" id="q" size="31" maxlength="255" value="" /> <input type="submit" class="submit" name="sa" value="Ok" /></form></td>
</tr>
</table>
<!-- END BREADCRUMB -->

<br clear="all" />


<!-- START CONTENT -->
<div id="content">


<h1>Classe Segurança</h1>

<p>A Classe de Segurança contém métodos que ajudam você criar uma aplicação segura, tratando de segurança para dados de entrada.</p>

<h2>Filtragem XSS</h2>

<p>CodeIgniter vem com filtro de prevenção contra Cross Site Scripting que pode ser execultada automaticamente para filtrar
todos dados POST e COOKIE que forem encontrados, ou pode executar em uma base por item. Por padrão ele <strong>não</strong> 
executa globalmente, uma vez que requer um pouco de sobrecarga de processamento, e desde que você não pode precisar dele em todos os casos.</p>

<p>O filtro XSS ve técnicas normalmente usadas para acionar Javascript ou outros tipos de códigos que tentam roubar cookies
ou causar outros danos. Se algo não é permitido é encontrada um processamento seguro para ela, convertendo os dados para as entidade de carácter</p>

<p>
Nota: Esta função só deve ser usado para tratar com os dados após o envio. Não é algo que deve ser usado para o processamento em geral tempo de execução, pois requer uma grande quantidade de sobrecarga de processamento.</p>


<p>Para filtrar os dados através do filtro XSS use esta função:</p>

<h2>$this->security->xss_clean()</h2>

<p>Aqui está um exemplo de uso:</p>

<code>$data = $this->security->xss_clean($data);</code>

<p>Se desejar que o filtro seja executadp automaticamente toda vez que encontrar dados POST ou COOKIE você pode habilitar abrindo o arquivo 
<kbd>application/config/config.php</kbd> e alterando essa configuração:</p>

<code>$config['global_xss_filtering'] = TRUE;</code>

<p>Nota: Se você usar a classe de validação de formulário, ela oferece a opção de filtragem XSS também.</p>

<p>Um segundo parâmetro opcional, <dfn>is_image</dfn>, permite que esta função seja utilizada para testar as imagens para possíveis ataques XSS, útil para segurança no envio (upload) de arquivos. Quando este segundo parâmetro é definido para <dfn>TRUE</dfn>, ao invés de retornar uma string alterada, a função retorna TRUE se a imagem é segura, e FALSE se ela contém informações maliciosas que um navegador pode tentar executar.</p>

<code>if ($this->security->xss_clean($file, TRUE) === FALSE)<br />
{<br />
&nbsp;&nbsp;&nbsp;&nbsp;// arquivo falhou no teste de XSS<br />
}</code>


<h2>$this->security->sanitize_filename()</h2>

<p>Ao aceitar nomes de arquivos de entrada do usuário, é melhor limpar para evitar passagem de diretório e outros problemas de segurança relacionados. Para fazer isso, use o método da classe de segurança <dfn>sanitize_filename()</dfn>. Aqui está um exemplo:</p>

<code>$filename = $this->security->sanitize_filename($this->input->post('filename'));</code>

<p>Se for aceitável para o usuário incluir entradas caminhos relativos, por exemplo, <kbd>file/in/some/approved/folder.txt</kbd>, você pode definir um segundo parêmetro opcinal,
	<samp>$relative_path</samp> para TRUE.</p>

<code>$filename = $this->security->sanitize_filename($this->input->post('filename'), TRUE);</code>

<!-- @todo write docs for CSRF methods -->

<h2>Cross-site request forgery (CSRF)</h2>

<p>Você pode habilitar a proteção CSRF abrindo o arquivo <kbd>application/config/config.php</kbd> e alterando essa configuração:</p>
<code>$config['csrf_protection'] = TRUE;</code>

<p>Se você usar o método <var>form_open()</var> do <a href="../helpers/form_helper.html">assitente de formulário</a> irá inserir automaticamente um campo oculto csrf no eu formulário.</p>

</div>
<!-- END CONTENT -->


<div id="footer">
<p>
Tópico Anterior:&nbsp;&nbsp;<a href="pagination.html">Classe Paginação</a>
&nbsp;&nbsp;&nbsp;&middot;&nbsp;&nbsp;
<a href="#top">Topo da Página</a>&nbsp;&nbsp;&nbsp;&middot;&nbsp;&nbsp;
<a href="../index.html">Guia de Usuário CodeIgniter</a>&nbsp;&nbsp;&nbsp;&middot;&nbsp;&nbsp;
Próximo Assunto:&nbsp;&nbsp;<a href="sessions.html">Classe Sessão</a>
</p>
<p><a href="http://codeigniter.com.br">CodeIgniter</a> &nbsp;&middot;&nbsp; Copyright &#169; 2006 - 2011 &nbsp;&middot;&nbsp; <a href="http://ellislab.com/">EllisLab, Inc.</a></p>
</div>

</body>
</html>